﻿Public Class Fächer_Class

    Dim Note_class As New Noten_Class

    Dim MAX_NOTEN As Integer = 100 ' Anzahl der Noten
    Public name As String             ' Eigenschaft für Fächer
    Public typ As String              ' Eigenschaft für Fächer
    Public notenArray(MAX_NOTEN) As Noten_Class   ' Platz für Noten eines Faches die mit addNote hinzugefügt werden können
    Public notenAnz As Integer = 0    ' benötigt zum Berechnen des Durchschnitts
    Public durchschnitt As Double = 0

    ' Definition eines Faches
    Public Sub Fach(ByVal _name As String, ByVal _typ As String)
        name = _name
        typ = _typ
    End Sub

    ' einfache Definition eines Faches

    Public Sub Fach()
    End Sub

    ' Fügt eine Note zum notenArray vom typ Note der Klasse Note hinzu

    Public Function addNote(ByRef note As Noten_Class)
        Dim i As Integer = 0
        For i = 0 To MAX_NOTEN
            If notenArray(i) Is Nothing Then
                notenArray(i) = note
                notenAnz = notenAnz + 1
                Return notenArray(i)
            End If
        Next
        Return Nothing
        MsgBox("Error")
    End Function

    ' berechnet den Durchschnitt für ein Fach

    Public Function calcDurchschnitt()
        If notenAnz = 0 Then
            Return 0
        End If

        Dim summeM As Double = 0
        Dim summeK As Double = 0
        Dim notenAnzM As Integer = 0
        Dim notenAnzK As Integer = 0

        Dim i As Integer
        For i = 0 To notenAnz - 1
            If notenArray(i).typ = "Mündlich" Then
                summeM = summeM + notenArray(i).punkte
                notenAnzM = notenAnzM + 1
            ElseIf notenArray(i).typ = "Klausur" Then
                summeK = summeK + notenArray(i).punkte
                notenAnzK = notenAnzK + 1
            End If
        Next

        If notenAnzM = 0 Then
            durchschnitt = Math.Round(summeK / notenAnzK, 2)
        ElseIf notenAnzK = 0 Then
            durchschnitt = Math.Round(summeM / notenAnzM, 2)
        Else
            If Me.typ = "Grundkurs" Then
                durchschnitt = Math.Round((summeK / notenAnzK) * 0.25 + (summeM / notenAnzM) * 0.75, 2)
            Else
                durchschnitt = Math.Round((summeK / notenAnzK) * 0.5 + (summeM / notenAnzM) * 0.5, 2)
            End If
        End If
        Return durchschnitt
    End Function

End Class
